package com.ruoyi.quartz.task;

import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class TaskSelectOutdatedData implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 从 JobDetail 中获取参数
        String message = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("message");

        log.info("TaskSelectOutdatedData-参数:{}",message);
        // 执行任务逻辑
    }

    public static void main(String[] args) throws SchedulerException {
        // 1. 创建调度器（Scheduler）
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 2. 创建 JobDetail（任务详情）
        JobDetail jobDetail = JobBuilder.newJob(TaskSelectOutdatedData.class) // 绑定任务类
                .withIdentity("helloJob", "jobGroup1") // 任务标识（名称+组名）
                .usingJobData("message", "Hello Quartz!") // 传递参数
                .build();

        // 3. 创建 Trigger（触发器）
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("helloTrigger", "triggerGroup1") // 触发器标识
                .startNow() // 立即开始
                // 3.1 使用 cron 表达式（每3秒执行一次）
                .withSchedule(CronScheduleBuilder.cronSchedule("0/3 * * * * ?"))
                // 3.2 或使用固定间隔（每5秒执行一次）
                // .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                //         .withIntervalInSeconds(5)
                //         .repeatForever())
                .build();

        // 4. 将 JobDetail 和 Trigger 注册到调度器
        scheduler.scheduleJob(jobDetail, trigger);

        // 5. 启动调度器
        scheduler.start();

        // 6. （可选）运行一段时间后关闭（实际应用中通常不关闭）
        try {
            Thread.sleep(10000); // 运行10秒
            scheduler.shutdown();
        } catch (InterruptedException ignored) {
        }
    }
}
